#!/bin/bash

#用户名
USER=$1
CLUSTER=k8s-cluster-1
NAMESPACE=$2
APISERVER=$3
#工作目录保存后续生成的文件config，证书文件
prefix=./
#集群默认证书目录
CA_PATH=/etc/kubernetes/ssl

#创建私钥并签署
function createKeys {
  mkdir -p $prefix/$1
  cd $prefix/$1
  echo "现在创建用户： $1"
  (umask 077; openssl genrsa -out $1.key 2048)
  openssl req -new -key $1.key -out $1.csr -subj "/CN=$1"
  openssl x509 -req -in $1.csr -CA ${CA_PATH}/kube-ca.pem -CAkey ${CA_PATH}/kube-ca-key.pem -CAcreateserial -out $1.crt -days 5000
  openssl x509 -in $1.crt -text -noout
}

createKeys $USER

#创建用户配置
function setCredentials {
  #创建集群
  kubectl config set-cluster $CLUSTER  --server=$APISERVER --certificate-authority=${CA_PATH}/kube-ca.pem --embed-certs=true --kubeconfig=$prefix/$1/config
  #用户证书配置
  kubectl config set-credentials $1 --client-certificate=$1.crt --client-key=$1.key --embed-certs=true --kubeconfig=$prefix/$1/config
  #创建context 
  kubectl config set-context ctx-$1  --namespace=$NAMESPACE --cluster=$CLUSTER --user=$1 --kubeconfig=$prefix/$1/config
}

setCredentials $USER
